package com.xgk.boot.module.core.ui;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.resource.PathResourceResolver;

import java.io.IOException;

@Configuration
public class UIResourceConfiguration implements WebMvcConfigurer {

    @Value("${springdoc.swagger-ui.enabled:false}")
    private boolean swaggerEnabled;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //配置映射关系
        if(!swaggerEnabled)
            registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/webjars/elm-ui/").resourceChain(true);

    }

    public void addViewControllers(ViewControllerRegistry registry) {
        if(!swaggerEnabled) {
            registry.addViewController("/admin-api/**").setViewName("forward:/admin-api");

            // 捕获所有未定义路径
//        registry.addViewController("/{path:[^\\.]*}")
            registry.addViewController("/{path:[^\\.]*}/**").setViewName("forward:/index.html");
            registry.addViewController("/").setViewName("forward:/index.html");
        }
    }

//    private static final List<String> skipUrl = new ArrayList<>();
//
//    static {
//        skipUrl.add("/**.html");
//        skipUrl.add("/**.js");
//        skipUrl.add("/scripts/**.js");
//        skipUrl.add("/**.css");
//        skipUrl.add("/**.svg");
//        skipUrl.add("/**.png");
//        skipUrl.add("/img/**");
//        skipUrl.add("/icons/**");
//        skipUrl.add("/static/**");
//        skipUrl.add("/");
//        skipUrl.add("/login/**");
//        skipUrl.add("/pages/login");
//        skipUrl.add("/agreement/content");
//        skipUrl.add("/login/hasSetAdminPassword");
//        skipUrl.add("/envInfo/getList");
//        skipUrl.add("/error");
//        skipUrl.add("/**.ico");
//    }
//
//    @Override
//    public void addInterceptors(InterceptorRegistry registry) {
//
//        registry.addInterceptor(new SecureInterceptor(secureProperties)).excludePathPatterns(skipUrl);
//    }

}
